package com.shop.cereshop.commons.domain.rank;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 排行榜统计实体类
 * 对应表：cere_agent_rank
 * @author lx
 */
@Data
@ApiModel(value = "AgentRank", description = "排行榜统计实体类")
@TableName("cere_agent_rank")
public class AgentRank {

  /**
   * 统计ID
   */
  @ApiModelProperty(value = "统计ID")
  @TableId(type = IdType.AUTO)
  private Long rankId;

  /**
   * 榜单类型：1-商家数量榜，2-商家成交额榜，3-用户数量榜，4-用户成交额榜，5-业务员推广榜，6-代理商推广榜
   */
  @ApiModelProperty(value = "榜单类型：1-商家数量榜，2-商家成交额榜，3-用户数量榜，4-用户成交额榜，5-业务员推广榜，6-代理商推广榜")
  private Integer rankType;

  /**
   * 上榜用户ID
   */
  @ApiModelProperty(value = "上榜用户ID")
  private Long agentUserId;

  /**
   * 统计值（人数/金额）
   */
  @ApiModelProperty(value = "统计值（人数/金额）")
  private BigDecimal statValue;

  /**
   * 排名
   */
  @ApiModelProperty(value = "排名")
  private Integer rankLevel;

  /**
   * 统计周期：1-日，2-周，3-月
   */
  @ApiModelProperty(value = "统计周期：1-日，2-周，3-月")
  private Integer statCycle;

  /**
   * 统计日期（周期结束日）
   */
  @ApiModelProperty(value = "统计日期（周期结束日）")
  private LocalDate statDate;

  /**
   * 创建时间
   */
  @ApiModelProperty(value = "创建时间")
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private LocalDateTime createTime;

  /**
   * 更新时间
   */
  @ApiModelProperty(value = "更新时间")
  @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
  private LocalDateTime updateTime;
}